﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MMessaging.MessagingEx.Services;

namespace MMessaging.MessagingEx.Common
{
	/// <summary>
	/// Interface, das alle Plug-Ins für MMessaging-Services implementieren müssen
	/// </summary>
	/// <typeparam name="MESSAGETYPE"></typeparam>
	public interface IMServicePlugIn<MESSAGETYPE>
		where MESSAGETYPE : class
	{
		/// <summary>
		/// Registriert das Plug-In beim Service in derart, dass es über eintreffende
		/// Messages informiert wird.
		/// </summary>
		/// <param name="service">
		/// Service, den dieses Plug-In um zusätzliche Funktionalität erweitert.
		/// </param>
		/// <param name="postMessageFunc">
		/// Delegate, der aufgerufen wird, wenn das Plug-In eine Message senden will.
		/// Muss diese Message versenden.
		/// </param>
		void InitPlugIn(
			MServiceBase<MESSAGETYPE> service,
			Action<MESSAGETYPE> postMessageFunc
			);
	}
}
